1. Field of the Invention
The present invention relates to the field of real time computer systems, and to a method and apparatus for coordinating access to a storage system by a mix of real time and non-real time processes of the real time computer system.
2. Background Art
Real time operating systems are well known in the prior art. These operating systems are typically multi-tasking preemptive operating systems providing low level support for system or client real time processes. Real time processes are those requiring some minimal level of processing time or input/output (I/O) data transfers over a given time slice. Real time processes often require a particular minimal bit rate delivery of data or I/O bandwidth of the available processing or input/output (I/O) capacity. Non-real time processes are those not requiring a minimal bit rate or I/O bandwidth. Non-real time processes typically do not suffer performance failures if their processing is interrupted for a period of time. Real time processes are sensitive to such system interruptions.
An example of a system in which interruptions in the delivery of data produce unacceptable results is a video file system in a video server used for on-demand delivery of full length video programs. In such a system, hundreds of full length videos are stored in digital form in a multi-terabyte data storage system. Video data is retrieved in real time at a customer's request, and delivered via a communications network to the customer for viewing. In this type of system, interruptions in the continuous flow of video data from the real time system to the customer or client cause "blips" or other unacceptable deterioration in the quality of the video image being delivered. To deliver a satisfactory product to the end-user, such interruptions must be avoided.
Real time processes, such as a video server, require a certain amount of I/O subsystem resources (e.g. disk bandwidth). There are two ways used in the prior art for handling these real time processes.
The first prior art method for supporting real time processes is the use of an operating system that supports scheduling priorities. In this prior art implementation, a real time process running on top of an operating system that supports scheduling priorities gives itself a scheduling priority. The operating system uses the scheduling priority when scheduling central processing unit (CPU) time and when issuing I/O requests to an I/O device (e.g. a mass storage device or storage subsystem such as a disk drive or array of disk drives) for the real time process. This prior art implementation allows real time and non-real time processes to co-exist; however, such operating systems cannot always guarantee that the minimum I/O requirements of the real time process are met. In particular, the CPU scheduler may not be perfectly tuned to the needs of a particular real time process. Further, such operating systems are not always available.
The second prior art method for supporting real time processes is the use of a single I/O process for centralizing the scheduling of I/O requests to an I/O device or subsystem. Referring to FIG. 6, a server 120 is shown to contain a single centralized I/O process 128 for scheduling and handling real time I/O requests to an I/O device 130 from a plurality of client systems or processes 126. The centralized I/O process 128 is able to coordinate all accesses to the I/O device 130 and all accesses to the I/O device 130 are made through the centralized process 128. This approach allows the centralized I/O process 128 to tightly control the scheduling of accesses to the I/O device 130 by assigning a time slice to each client 126. The problem with this approach is that both real time and non-real time processes cannot be accommodated efficiently. Also, a central scheduling implementation does not scale well. As the number of processes increases, the amount of overhead performed by the scheduling mechanism rapidly increases. Hence, the scheduler quickly becomes a system bottleneck.
It would be advantageous to implement a system in which a real-time process could control the bit rate of the delivery of a stream of real time data. It would also be advantageous to allow both real time and non-real time processes to be serviced according to their respective processing needs. It would be further advantageous to provide such a system that was independent of a particular operating system or system hardware platform. These characteristics are not present in prior art computer systems.
U.S. Pat. No. 5,278,838 issued to Ng et al. discloses a method for rebuilding lost data in a redundant array data storage system (RAID) system while reducing interference with normal data recovery and storage operations.
U.S. Pat. No. 5,315,602 issued to Noya et al. discloses a system for reducing the number of I/O requests required to write data in a RAID system.
U.S. Pat. No. 5,305,326 issued to Solomon et al. discloses a method for handling reconstruction of data after a power failure, for example after a power failure of an I/O processor in a RAID system.
U.S. Pat. No. 5,303,244 issued to Watson discloses a method for mapping logical RAID storage arrays to physical disk drives.
U.S. Pat. No. 5,235,601 issued to Stallmo et al. discloses a method for restoring valid data in a RAID system after a write failure caused by a storage unit fault.
U.S. Pat. No. 5,233,618 issued to Glider et al. discloses a method and apparatus for detecting and reconstructing incorrectly routed data, for detecting when a failure in writing a block of data has occurred, and for reconstructing the lost data.
U.S. Pat. No. 5,287,462 issued to Jibbe et al. discloses an apparatus for coupling a host bus with a number of storage array busses in a RAID system.
U.S. Pat. No. 5,124,987 issued to Milligan et al. discloses a disk drive array in which updates of redundancy data are eliminated by writing modified "virtual track instances" into logical tracks of the disks comprising a redundancy group.
U.S. Pat. No. 5,088,081 issued to Farr discloses a RAID system in which reconstructed data from a bad data block are stored on a "reserve disk."
U.S. Pat. No. 4,761,785 issued to Clark et al. discloses a storage management system in which parity blocks are distributed among a set of storage devices instead of being stored in a single storage device.
Co-pending U.S. patent application Ser. No. 08/312,509 filed Sep. 26, 1994 now U.S. Pat. No. 5,623,595 discloses a method and apparatus for providing transparent, real-time reconstruction of corrupted data from a redundant array of storage units.
Thus, a better mechanism for coordinating access to a storage system in a real time environment is needed.